import 'package:flutter/material.dart';
import 'data.dart';

class SearchBarDemo extends StatefulWidget {
  @override
  SearchBarDemoState createState() => new SearchBarDemoState();
}

class SearchBarDemoState extends State<SearchBarDemo> {
  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('SearchBarDemo'),
        actions: <Widget>[
          IconButton(
            icon: Icon(Icons.search),
            onPressed: (){
              showSearch(context: context, delegate: searchBarDelegate());
            },
          )
        ],
      ),
    );
  }
}

class searchBarDelegate extends SearchDelegate{

  @override
  // TODO: implement searchFieldLabel
  String get searchFieldLabel => "搜索";

  @override
  Widget buildSuggestions(BuildContext context) {
      final suggestionList = query.isEmpty
          ? recentSuggest
          : searchList.where((input)=>input.startsWith(query)).toList();
      return ListView.builder(
        itemCount: suggestionList.length,
        itemBuilder: (context,index)=>ListTile(
          title: RichText(
            text: TextSpan(
              text: suggestionList[index].substring(0,query.length),
              style: TextStyle(
                color: Colors.black,fontWeight: FontWeight.bold,
              ),
              children: [
                TextSpan(
                  text: suggestionList[index].substring(query.length),
                  style: TextStyle(color: Colors.grey)
                )
              ]
            ),
          ),
        ),
      );
  }

  @override
  List<Widget> buildActions(BuildContext context) {
      return [
        IconButton(
          icon: Icon(Icons.clear),
          onPressed: ()=>query = "",
        )
      ];
  }

  @override
  Widget buildLeading(BuildContext context) {
      return IconButton(
        icon: AnimatedIcon(
          icon: AnimatedIcons.menu_arrow,
            progress: transitionAnimation,
        ),
        onPressed: ()=>close(context,null),
      );
  }

  @override
  Widget buildResults(BuildContext context) {
      return Container(
        width: 100.0,
        height: 100.0,
        child: Card(
          color: Colors.redAccent,
          child: Center(
            child: Text(query),
          ),
        ),
      );
  }
}
